Since language and information took on written form data privacy and secrecy have been an issue. In the modern world symmetric block ciphers have become widely used to encrypt insecure information into a form that only those with the key can access. Well known block cipher methods include the Data Encryption Standard (DES) and the Advanced Encryption Standard (AES). In applying DES or AES a designer can choose a mode of operation such as electronic codebook or cipher block chaining among others. All modes of operation use an iterative process to encrypt (and decrypt using an inverse process) that repeats for a number of rounds. Each round involves using an encryption function, e.g., a Feistel network, which uses a seed and the current output of the encryption function combined with a previous output of the encryption function to produce the next input to the encryption function.
In the process of establishing a cryptographic key many applications use a custom transformation. A custom transformation is a non-standard or non-obvious method or algorithm that modifies the data during key generation to increase the strength of the key against attack. Key generating applications may use a one-way function as the custom transformation, but the value of the resulting final key cannot be controlled because there are too many possible input values. An invertible function can be used for the custom transformation, such as a symmetric block cipher as mentioned above. However, in this case the symmetric key becomes an attack point.